<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<pre id="console"></pre>
<iframe name="i0"></iframe>
<iframe name="i1"></iframe>
<iframe name="i1"></iframe>
<iframe name="i2"></iframe>

<div id="host"></div>

<script>

description("This test ensures that iframe inside shadow isn't visible from the host document.");

// At first, check iframe in usual way
shouldBe("window.length", "4");
var i0 = document["i0"];
var i0byname = document.getElementsByName("i0");
shouldBe("i0byname.length", "1");
shouldBe("i0", "i0byname[0].contentWindow");

var i1 = document["i1"];
var i2byname = document.getElementsByName("i0");
shouldBe("i1.length", "2");

// Then Adding some iframes into a shadow.

var host = document.getElementById("host");
var shadow = host.attachShadow({mode: 'open'});
var i2InShadow = document.createElement("iframe");
i2InShadow.setAttribute("name", "i2");
shadow.appendChild(i2InShadow);

var i3InShadow = document.createElement("iframe");
i3InShadow.setAttribute("name", "i3");
shadow.appendChild(i3InShadow);

shouldBe("window.length", "4");

var i2 = document["i2"];
var i2byname = document.getElementsByName("i2");
shouldBe("i2byname.length", "1");
shouldBe("i2byname[0].contentWindow", "i2");

var i3 = document["i3"];
var i3byname = document.getElementsByName("i3");
shouldBe("i3byname.length", "0");
shouldBe("i3", "undefined");

// Moving iframes across shadow boundary to ensure
// That window.length and property availability are
// correctly updated.

shadow.appendChild(i0.frameElement);

shouldBe("window.length", "3");
shouldBe("document['i0']", "undefined");

document.body.appendChild(i3InShadow);
shouldBe("window.length", "4");
shouldBe("document['i3']", "i3InShadow.contentWindow");

</script>

</body>
</html>
